const bf = Buffer.from([1, 2, 3, 4]);
/** buffer中每一个单元包含两位 每一位都用16进制表示 也就是说(16x16) 一个单元可以表示0-255(也就是Buffer.alloc(1)的大小) 共256种状态(8位二进制数)
 * 我们通常说的buffer中的一位 其实就是这两位16进制数组成的一位
 * */

/** writeInt8
 * It must be >= -128 and <= 127.
 * 一共256种状态
 * 会占用一位buffer位 (00)*/
bf.writeInt8(-127, 1);
console.log('bf:',bf); // bf: <Buffer 01 7e 03 04>

/** int8是没有BE LE的, 因为int8只占一位(buffer里的一位,即一个单元(16位二进制数))
 * , 而int16占用两位 故就存在高位 和 低位
 * , BE是大端 高位放在前面
 * , LE是小端 高位放在后面
 *
 * writeInt16BE It must be >= -32768 and <= 32767
 * 会占用两位buffer位 (00 00)
 * */
bf.writeInt16BE(255, 2);
console.log(bf); // <Buffer 01 0c 00 ff>
bf.writeInt16BE(256, 2);
console.log(bf); // <Buffer 01 0c 01 00>
bf.writeInt16BE(512, 2);
console.log(bf); // <Buffer 01 0c 02 00> ←高位
bf.writeInt16LE(512, 2);
console.log(bf); // <Buffer 01 0c 00 02> ←低位


/** 另外需要注意的是
 * 如果你使用的是writeInt8、16、32这样的api写入buffer内容
 * 需要使用readInt8、16、32 这样的api来解码解读*/
const tmpBuffer = Buffer.alloc(2);
//It must be >= -128 and <= 127.
tmpBuffer.writeInt8(-100); //

//9c 用16进制来计算为 156,但我们这里却用来表示-100了
console.log(tmpBuffer); // <Buffer 9c 00>

console.log(tmpBuffer[0]); // 直接打印是156 但其实我们想让9c代表的是-100

console.log(tmpBuffer.readInt8(0)); // -100
